home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Leser 19 / Amiga Plus Leser CD 19.iso / Tools / Development / source-highlight-1.6.1 / Doc / README < prev    next >
Text File  |  2002-11-17  |  16KB  |  423 lines

  1.  
  2.   GNU Source-highlight 1.6.1
  3.  
  4. October 5th, 2002
  5.  
  6. by Lorenzo Bettini <mailto:bettini@gnu.org>
  7.  
  8. This program, given a source file, produces a document with syntax
  9. highlighting.
  10.  
  11. At the moment this package can handle
  12.  
  13.     * Java
  14.     * C/C++
  15.     * Prolog
  16.     * Perl
  17.     * Php3
  18.     * Python
  19.     * Flex new
  20.     * ChangeLog new
  21.  
  22. as source languages, and
  23.  
  24.     * HTML
  25.     * XHTML
  26.  
  27. as output format.
  28.  
  29. NOTICE: now the name of the program is source-highlight: there are no
  30. two separate programs, namely java2html and cpp2html, anymore.  However
  31. there are two shell scripts with the same name in order to facilitate
  32. the migration (however their use is not advised).
  33.  
  34. GNU Source-highlight is free software. Please see the file COPYING for
  35. details. For documentation, please read this file.
  36.  
  37. GNU Source-highlight is a GNU <http://www.gnu.org> program and its main
  38. home page is at GNU site:
  39. http://www.gnu.org/software/src-highlite/source-highlight.html
  40.  
  41.  
  42.     Download
  43.  
  44. You can download it from GNU's ftp site:
  45. ftp://ftp.gnu.org/gnu/source-highlight/ or from one of its mirrors (see
  46. http://www.gnu.org/prep/ftp.html).
  47.  
  48. I do not distribute Windows binaries anymore; since, they can be easily
  49. built by using Cygnus C/C++ compiler, available at
  50. http://www.cygwin.com/. However, if you don't feel like downloading such
  51. compiler, you can request such binaries directly to me, by e-mail
  52. (bettini@gnu.org <mailto:bettini@gnu.org>) and I can send them to you.
  53. An MS-Windows port of Source-highlight is available from
  54. http://gnuwin32.sourceforge.net/.
  55.  
  56. You may also want to check the md5sum of the archives, which are also
  57. digitally signed by me (Lorenzo Bettini) with GNU gpg
  58. (http://www.gnupg.org). My GPG public key can be found at my home page
  59. (see at the end of this doc).
  60.  
  61. You can also get the patches, if they are available for a particular
  62. release (see below <#Patching%20from%20a%20previous%20version> for
  63. patching from a previous version).
  64.  
  65.  
  66.       Anonymous CVS Access
  67.  
  68. This project's CVS repository can be checked out through anonymous
  69. (pserver) CVS with the following instruction set. When prompted for a
  70. password for anoncvs, simply press the Enter key.
  71.  
  72. cvs -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/src-highlite login
  73.  
  74. cvs -z3 -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/src-highlite co src-highlite
  75.  
  76. Further instructions can be found at the address:
  77. http://savannah.gnu.org/projects/src-highlite.
  78.  
  79.  
  80.     Changes in this release
  81.  
  82.     * see NEWS file for a summary of new features in this release and
  83.     * see ChangeLog <ChangeLog.html>  (formatted by source-highlight
  84.       itself :-) for the complete list of changes sources
  85.  
  86.  
  87.     Related Software and Links
  88.  
  89. Martin Gebert <Murphy.Gebert@gmx.de <mailto:Murphy.Gebert@gmx.de>> is
  90. also implementing a KDE interface to source-highlight programs, at the
  91. moment it is still in beta (but he did a wonderful job!), and it is
  92. called ksrc2html; if you want to test it:
  93. http://murphy.netsolution-net.de/Ksrc2.html.
  94.  
  95. CGI support was enabled thanks to Robert Wetzel
  96. <rw8@mail.inf.tu-dresden.de <mailto:rw8@mail.inf.tu-dresden.de>>; I
  97. haven't tested it personally yet, so you may ask him directly. Moreover
  98. he set up some examples at the page
  99. http://www.inf.tu-dresden.de/~rw8/java2.html
  100. <http://www.inf.tu-dresden.de/%7Erw8/java2.html>. If you want to use
  101. source-highlight as a CGI program, you have to use the executable
  102. source-highlight-cgi.
  103.  
  104. Moreover there's also a Java version of java2html, made by
  105. bayard@generationjava.com <mailto:bayard@generationjava.com>, you can
  106. find it at http://www.generationjava.com/java/Java2Html.shtml.
  107.  
  108.  
  109.     Installation
  110.  
  111. See the file INSTALL for detailed building and installation
  112. instructions; anyway if you're used to compiling Linux software that
  113. comes with sources you may simply follow the usual procedure:
  114.  
  115. cd <source code main directory>
  116. ./configure
  117. make
  118. make install
  119.  
  120. Note: unless you specify a different install directory by --prefix
  121. option of configure (e.g. ./configure --prefix=<your home>), you must be
  122. root to 'make install'.
  123.  
  124. It is also possible to specify as following option for configure:
  125. --enable-input-chroot to hardcode in the program the path to prefix for
  126. input files.
  127.  
  128. Before you run 'make install' you may want to check that the programs
  129. have compiled fine, so you can run 'make check'.
  130.  
  131. Files will be installed in the following directories:
  132.  
  133.     * Executables          -> /prefix/bin
  134.     * docs and samples     -> /prefix/share/doc/source-highlight
  135.     * conf files           -> /prefix/share/source-highlight
  136.  
  137. Default value for prefix is /usr/local but you may change it with
  138. --prefix option to configure (see above).
  139.  
  140.  
  141.       What you need to build source-highlight
  142.  
  143. Actually you need nothing more than a Unix C/C++ compiler
  144.  
  145. source-highlight has been developed under Linux, using gcc (C++), and
  146. bison (yacc) and flex (lex), and ported under Win32 with Cygnus C/C++
  147. compiler, available at http://www.cygwin.com/ (a .DLL is also
  148. distributed together with the .exe: you may simply copy it in the same
  149. place of the .exe). I used the excellent GNU Autoconf and Automake. I
  150. also used Autotools (ftp://ftp.ugcs.caltech.edu/pub/elef/autotools)
  151. which creates a starting source tree (according to GNU standards) with
  152. autoconf, automake starting files. Finally I used GNU gengetopt
  153. (http://www.gnu.org/software/gengetopt), for command line parsing.
  154.  
  155. Actually, unless you want to develop source-highlight, you don't need
  156. all these tools to build source-highlight because I provide generated
  157. sources; you don't need neither bison (yacc) nor flex (lex), for the
  158. same reason. Actually programs that use lex generated files need to link
  159. with library libfl (or libl for lex); anyway configuration phase can
  160. discover if this library is missing and in that case it sets the program
  161. to link with a source file I provide. This hack works for flex: I don't
  162. know about lex generated scanners. But, again, this is a problem only if
  163. you develop source-highlight and you use lex.
  164.  
  165.  
  166.       Patching from a previous version
  167.  
  168. If you downloaded a patch, say source-highlight-1.3-1.3.1-patch.gz(i.e.
  169. the patch to go from version 1.3 to version 1.3.1), cd to the directory
  170. with sources from the previous version (source-highlight-1.3) and type:
  171.  
  172. gunzip -cd ../source-highlight-1.3-1.3.1.patch.gz | patch -p1
  173.  
  174. and restart the compilation process (if you had already run configure a
  175. simple make will do).
  176.  
  177.  
  178.     Usage and examples
  179.  
  180. source-highlight only does a lexical analysis of the source code, so the
  181. program source is assumed to be correct !
  182.  
  183. here's how to run source-highlight (for this example we will use C/C++
  184. input files, but this is valid also for other source-highlight input
  185. languages):
  186.  
  187. source-highlight --src-lang cpp --out-format html --input <file (a C++ prog)> --output <file (an html)> [options]
  188.  
  189. For input files, apart from the -i (--input) option and the standard
  190. input redirection, you can simply specify some files at the command line
  191. and also use regular expressions (for instance *.java).  In this case
  192. the name for the output files will be formed using the name of the
  193. source file with a .<ext> appended, where <ext> is the extension chosen
  194. according to the output format specified (in this example it would be
  195. .html).
  196.  
  197. If STDOUT string is passed as -o (--output) option, then the output is
  198. forced to the standard output anyway.
  199.  
  200. Required command line options are:
  201.  
  202.    1. --src-lang (or -s) <lang>: where <lang> can be:
  203.           * java (for Java)
  204.           * cpp (for C/C++)
  205.           * prolog (for Prolog)
  206.           * perl (for Perl)
  207.           * php3 (for Php3)
  208.           * python (for Python)
  209.           * flex (for flex)
  210.           * changelog (for ChangeLog)
  211.       This specifies the language used to write the sources that have to
  212.    2. be processed. --out-format (or -f) <format>: where <format> can
  213.       only be:
  214.           * html
  215.           * xhtml
  216.       This specifies the format for the output of the highlighter (for
  217.       the moment only html output can be produced). 
  218.  
  219. Other command line options:
  220. If you want a real html document, specify --doc option at the end.
  221. Otherwise you just get some text to copy and paste in you own html
  222. pages. If you choose -doc option the page will have a white background
  223. and your source file name as title. --tab n option apply a substitution
  224. of tab characters with n spaces. You also may want to specify the title
  225. of the page with --title "my title" option (this implies -doc). Now you
  226. can also generate an html with CSS format, by using --css "url of .css"
  227. (try some .css files included in the package). The order of the options
  228. is not relevant. You may also want to customize the produced document:
  229. you can use --header and --footer options that allow you to specify
  230. files to be included, respectively, at the beginning and at the end of
  231. the document. --tags-file allows to specify the location of the file for
  232. format options (see below).  --output-dir specifies the output directory
  233. (if the output option is not specified the same directory of the source
  234. file is used).  --line-number option enables generation of line numbers.
  235.  
  236. Here are some links to some of the C and C++ sources of source-highlight
  237. colored with source-highlight itself:
  238.  
  239.     startapp.cc.html
  240.  
  241. generated with the following command
  242.  
  243. source-highlight -s cpp -f html --doc startapp.cc
  244.  
  245. Obviously it works with C files as well:
  246.  
  247.     cmdline.c.html
  248.  
  249. Created with the command (notice that this one uses both CSS file and
  250. headers and footers):
  251.  
  252. source-highlight -s cpp -f html -i cmdline.c -o cmdline.c.html 
  253.             --css="cpp2html.css"
  254.             --header="./header.html" --footer="./footer.html"
  255.  
  256. And obviously it works with header file as well:
  257.  
  258.     cmdline.h.html
  259.  
  260. created with the command:
  261.  
  262. source-highlight -s cpp -f html *.h --css="mono.css"
  263.  
  264. Here are some examples of Java files processed with source-highlight:
  265. Use Hello.java to make some test, if you want. Here's how Hello1.html,
  266. Hello2.html, Hello3.html, Hello4.html, Hello5.html, Hello_h_f.html,
  267. Hello_lines.html, Hello_xhtml.html, Hello_xhtml2.html were created:
  268.  
  269. source-highlight -s java -f html -i Hello.java -o Hello1.html
  270. source-highlight -s java -f html --input Hello.java --output Hello2.html --doc
  271. source-highlight -s java -f html -i Hello.java -o Hello3.html --title "Happy Java with java2html :-)" --tab 3
  272. source-highlight -s java -f html < Hello.java > Hello4.html --title "and what about CSS :-)" --css "Hello.css"
  273. source-highlight -s java -f html < Hello.java > Hello5.html --title "Wooo... this is quite dark ;-D" --css "mono-alt.css"
  274. source-highlight -s java -f html --doc *.java
  275. Processed Hello.java   (creates Hello.java.html)
  276. source-highlight -s java -f html --doc -i Hello.java -o Hello_h_f.html --tags-file="tags2.j2h" --header="header.html" --footer="footer.html"
  277. source-highlight -s java -f html --line-number --doc -i Hello.java -o Hello_lines.html
  278. source-highlight -s java -f xhtml --doc -i Hello.java -o Hello_xhtml.html --css xhtml.css
  279. ../src/source-highlight -s java -f xhtml --doc -i Hello.java -o Hello_xhtml2.html --tags-file tags.j2h
  280.  
  281. Here's the output of source-highlight applied to a Prolog program
  282. (through the option `source-highlight -s prolog`: test.pl.html.  This
  283. one is an highlighted Perl program (through the option `source-highlight
  284. -s prolog`): test.pm.html.  Here's an highlighted PHP3 program:
  285. test.php3.html. And here's a Python program: test.py.html.  This the the
  286. flex scanner for flex files flex_scanner.ll.html.
  287.  
  288. And here's the output of `source-highlight --help`
  289.  
  290. GNU source-highlight 1.6
  291.  
  292. Purpose:
  293.   Highlight the syntax of a source file (e.g. Java)
  294.   into a specific format (e.g. HTML)
  295.  
  296. Usage: source-highlight [OPTIONS]... [FILES]...
  297.    -h         --help               Print help and exit
  298.    -V         --version            Print version and exit
  299.    -iSTRING   --input=STRING       input file. default std input
  300.    -oSTRING   --output=STRING      output file. default std output
  301.    -sSTRING   --src-lang=STRING    source language (e.g. java, cpp, prolog, perl, php3, python, flex, changelog)
  302.    -fSTRING   --out-format=STRING  output format (e.g. html, xhtml)
  303.    -v         --verbose            verbose mode on
  304.    -d         --doc                create html with title and header
  305.    -cSTRING   --css=STRING         use a css for formatting. Implies --doc
  306.    -TSTRING   --title=STRING       give a title to the html. Implies --doc
  307.    -tINT      --tab=INT            specify tab length. default 8
  308.    -HSTRING   --header=STRING      file to insert as header
  309.    -FSTRING   --footer=STRING      file to insert as footer
  310.               --tags-file=STRING   specify format options (def. tags.j2h)
  311.    -n         --line-number        number all output lines
  312.               --output-dir=STRING  output directory
  313.  
  314. Maintained by Lorenzo Bettini <bettini@gnu.org>
  315. Report bugs to <bug-source-highlight@gnu.org>
  316.  
  317. As it handles standard output and input you may also run it like
  318.  
  319. cat MyFile.cpp | source-highlight -s cpp -f html | lpr
  320.  
  321. You may want to specify your options for syntax highlighting in the file
  322. tags.j2h. If this file is not present in the current directory, some
  323. default colors will be used. Here's the tags.j2h file that comes with
  324. this distribution:
  325.  
  326. keyword blue b ;      for language keywords
  327. type darkgreen ;      for basic types
  328. string red ;          for strings and chars
  329. comment brown i ;     for comments
  330. number purple ;       for literal numbers
  331. preproc darkblue b ;  for preproc directives (e.g. #include, import)
  332. symbol darkred ;      for simbols (e.g. <, >, +)
  333. function black b;     for function calls and declarations
  334. cbracket red;         for block brackets (e.g. {, })
  335.  
  336. tags2.j2h also specify the color of normal text, indeed it adds this line
  337.  
  338. normal darkblue ;
  339.  
  340. as you might see the syntax of this file is quite straightforward:
  341.  
  342.     * b = bold
  343.     * i = italics
  344.     * u = underline
  345.  
  346. You may also specify more than on of these options separated by commas
  347. e.g.
  348.  
  349. keyword blue u, b ;
  350.  
  351. you may see all possible colors in the file colors.html but you can also
  352. use the standard #<number> html syntax for specifying a color.
  353.  
  354. if something goes wrong with your options try to run source-highlight
  355. with --verbose option enabled.
  356.  
  357.  
  358.     Credits
  359.  
  360. See CREDITS for detailed contributions and THANKS  for a complete list
  361. of people that helped me with Source-highlight :-)
  362.  
  363.  
  364.     Feedback
  365.  
  366. Please tell me if you like this software :-)
  367.  
  368. Actually I want to extend it, so if you have some ideas...
  369. The most import one will be to make source-highlight more customizable :-)
  370.  
  371. Please send all bug reports by electronic mail to:
  372. bug-source-highlight@gnu.org <mailto:bug-source-highlight@gnu.org>
  373.  
  374.  
  375.   TODO
  376.  
  377. Here's the list of TODO stuff <TODO.txt>, if you'd like to contribute :-)
  378.  
  379.  
  380.   Mailing Lists
  381.  
  382. The following mailing lists are available:
  383.  
  384.     * help-source-highlight@gnu.org
  385.       <mailto:help-source-highlight@gnu.org>, for generic discussions
  386.       about the program and for asking for help about it (open mailing
  387.       list), http://mail.gnu.org/mailman/listinfo/help-source-highlight
  388.     * info-source-highlight@gnu.org
  389.       <mailto:info-source-highlight@gnu.org>, for receiving information
  390.       about new releases and features (read-only mailing list),
  391.       http://mail.gnu.org/mailman/listinfo/info-source-highlight
  392.  
  393. if you want to subscribe to a mailing list just go to the URL and follow
  394. the instructions, or send me an e-mail and I'll subscribe you.
  395.  
  396. My home page is http://www.lorenzobettini.it
  397.  
  398. source-highlight is free software. See the file COPYING for copying
  399. conditions. Anyway I won't get offended if you send me a postcard :-)
  400.  
  401. ------------------------------------------------------------------------
  402.  
  403. Return to GNU's home page </home.html>.
  404.  
  405. Please send FSF & GNU inquiries & questions to gnu@gnu.org
  406. <mailto:gnu@gnu.org>. There are also other ways to contact
  407. <http://www.gnu.org/home.html#ContactInfo> the FSF.
  408.  
  409. Please send comments on these web pages to webmasters@gnu.org
  410. <mailto:webmasters@gnu.org>, send other questions to gnu@gnu.org
  411. <mailto:gnu@gnu.org>.
  412.  
  413. Copyright (C) 2001 Free Software Foundation, Inc., 59 Temple Place -
  414. Suite 330, Boston, MA 02111, USA
  415.  
  416. Verbatim copying and distribution of this entire article is permitted in
  417. any medium, provided this notice is preserved.
  418.  
  419. Updated:9 Jan 2001 mhw
  420.  
  421. ------------------------------------------------------------------------
  422.  
  423.